<template>
  <div>
    <div class="hearder-search">
      <div class="toplineBox mb-10">
        <div class="toplineBox-left">
          <el-input v-model="editForm.name" placeholder="填写任务名称" size="small" class="w-140 mr-10"></el-input>
          <!--          档案任务/公文任务 我的任务使用 is_end-->
          <!--          档案任务 我的发布 审阅任务 is_finish 执行中完成-->
          <!--          公文任务 抄送任务 使用 is_read-->
          <el-select v-model="editForm.is_end" placeholder="选择状态" size="small"
                     class="w-140 mr-10">
            <el-option :label="item.name" :value="item.id" v-for="(item, index) in statusList"
                       :key="index"></el-option>
          </el-select>
          <el-date-picker
            v-model="value1"
            type="daterange"
            align="right"
            unlink-panels
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
          >
          </el-date-picker>
          <!--          <el-select v-model="editForm.type" placeholder="选择状态" size="small"-->
          <!--                     class="w-140 mr-10">-->
          <!--            <el-option :label="item.name" :value="item.id" v-for="(item, index) in timeList"-->
          <!--                       :key="index"></el-option>-->
          <!--          </el-select>-->
          <!--// 执行中 完成-->
          <!--周报表 月报表 年报表 近7天 30天 365天-->
          <!--去除时间到分-->
          <el-button type="primary" size="small" @click="searchFn"><i class="el-icon-search"></i>搜索</el-button>
          <el-button size="small" @click="refreshFn"><i class="el-icon-refresh"></i>刷新</el-button>
          <!--          <downexcel type="teskList"></downexcel>-->
        </div>
        <p class="numberline toplineBox-right">总{{ page.total }}条</p>
      </div>
    </div>
    <div class="table-body">
      <div class="table-body-box">
        <el-table
            ref="multipleTable"
            :data="arryList"
            :stripe="tableStyle.tableStripe"
            :border="tableStyle.tableBorder"
            tooltip-effect="dark"
            style="width: 100%"
            header-cell-class-name="table-text-c"
            cell-class-name="table-text-c">
          <el-table-column
              prop="id"
              width="80"
              label="ID">
          </el-table-column>
          <el-table-column
              prop="name"
              label="任务名">
          </el-table-column>
          <el-table-column
              label="发布人"
              width="100">
            <template slot-scope="scope">
              {{ scope.row.user.realname }}
            </template>
          </el-table-column>
          <el-table-column
              prop="create_time"
              label="下发时间"
              width="160">
          </el-table-column>
          <el-table-column
              prop="end_time"
              label="限改时间"
              width="110">
          </el-table-column>
          <el-table-column
              label="完成时间"
              width="110">
            <template slot-scope="scope">
              <!--              complete_time 整个任务完成时间-->
              <span v-if="scope.row.complete_time!=='1970-01-01'">{{ scope.row.complete_time }}</span>
            </template>
          </el-table-column>
          <!--// 24小时 一天计算-->
          <!--            <el-table-column-->
          <!--                    prop="time"-->
          <!--                    label="超时记录"-->
          <!--                    width="160">-->
          <!--            </el-table-column>-->
          <!--顺序排序-->
          <el-table-column
              prop="end_time"
              label="任务状态"
              width="80">
            <template slot-scope="scope">
              <!--              tabValue 普通任务 档案任务 公文任务-->
              <!--              根据任务的类型进行判断字段 editForm type-->
              <!--              1 我的任务 2 我的发布 3 我的审阅/我的抄送-->
              <!--              我的发布使用 审阅完成全部 is_finish 我的任务使用 is_end-->
              <span v-if="Number(tabValue)==2||Number(tabValue)==3">
                <span v-if="Number(editForm.type)==1" :class="scope.row.is_end <= 2?'':'c-success'">
                  {{ scope.row.is_end <= 2 ? userStatus[scope.row.is_end] : '完成' }}
                </span>
                <span v-if="Number(editForm.type)==2">
                  <span :class="scope.row.is_finish==1?'c-success':'c-danger'">{{
                      scope.row.is_finish == 1 ? '完成' : '执行中'
                    }}</span>
                </span>
                <!--                审阅-->
                <span v-if="Number(tabValue)==2 && Number(editForm.type)==3">
                  <span
                      :class="scope.row.is_finish==1?'c-success':'c-danger'">{{
                      scope.row.is_finish == 1 ? '完成' : '执行中'
                    }}</span>
                </span>
                <!--                已读未读状态-->
                <span v-if="Number(tabValue)==3&&Number(editForm.type)==3"
                      :class="scope.row.is_read=='已读'?'c-success':'c-danger'">
                  {{ scope.row.is_read }}
                </span>
              </span>
              <span v-if="Number(tabValue)==1">
                <span :class="scope.row.is_finish==1?'c-success':'c-danger'">{{
                    scope.row.is_finish == 1 ? '完成' : '执行中'
                  }}</span>
              </span>
            </template>
          </el-table-column>
          <el-table-column
              label="操作"
              width="180">
            <template slot-scope="scope">
              <el-button type="primary" size="small" @click="taskDetail(scope.row.id)" plain>任务详情
              </el-button>
              <!--              发布者总管理可删除-->
              <el-button type="danger" size="small" @click="handleDetel(scope.$index)" plain
                         v-if="(Number(tabValue)===1 && (userInfo.id === 1 || scope.row.admin_id === userInfo.id)) || Number(tabchildValue)===2">
                删除
              </el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </div>
    <!--工具条 分页-->
    <el-col :span="24" class="toolbar">
      <el-pagination
          background
          layout="prev, pager, next"
          :total="page.total"
          :page-size="page.pagesize"
          @current-change="handleSizeChange">
      </el-pagination>
    </el-col>
    <detailPoupe :visible.sync="detailVisible" :taskId="taskId" :tabValue="tabValue"></detailPoupe>
  </div>
</template>

<script>
import {pagination, tableoption, hourTime} from '@/utils/util.js'
import detailPoupe from "../detailPoupe";
import api from '@/utils/api.js'
import {mapGetters} from "vuex";
import {taskIndex, taskDetel} from '@/api/admin/task.js'

export default {
  props: ['tabchildValue', 'tabValue'],
  components: {
    detailPoupe
  },
  computed: {
    ...mapGetters(['userInfo']),
  },
  watch: {
    tabValue(val) {
      // 1 普通任务 2 档案任务 3 公文任务
      if (Number(val) === 1) {
        this.statusList = JSON.parse(JSON.stringify(this.sectionList))
      } else {
        this.statusList = JSON.parse(JSON.stringify(this.mylist))
      }

      this.editForm.is_end = ''
      this.editForm.p = 1
      this.editForm.type = 1
      this.InitFn()
    },
    tabchildValue(val) {
      // <!--          档案任务/公文任务 我的任务使用 is_end-->
      // <!--          档案任务 我的发布 审阅任务 is_finish 执行中完成-->
      // <!--          公文任务 抄送任务 使用 is_read-->
      // tabchildValue 1 我的任务 2 我的发布 3 抄送任务
      // tabValue 1 普通任务 2 档案任务 3 公文任务
      console.log('变了', val)
      console.log('变了1', this.tabValue)
      if (Number(val) === 1) {
        this.statusList = JSON.parse(JSON.stringify(this.mylist))
      } else if (Number(val) === 2) {
        this.statusList = JSON.parse(JSON.stringify(this.sectionList))
      } else if (Number(val) === 3) {
        if (Number(this.tabValue) === 3) {
          // 抄送任务
          this.statusList = JSON.parse(JSON.stringify(this.readTask))
        } else {
          this.statusList = JSON.parse(JSON.stringify(this.sectionList))
        }
      }
      // 档案
      this.editForm.is_end = ''
      this.editForm.p = 1
      this.editForm.type = val
      this.InitFn()
    }
  },
  data() {
    return {
      detailVisible: false,
      value1: '',
      arryList: [], // 页面数据列表
      // 搜索设置
      searchWord: '', // 搜索名称
      // 设置table样式
      tableStyle: tableoption,
      // 设置table页面分页所需
      page: {
        pageindex: pagination.pageIndex,
        pagesize: pagination.pageSize,
        total: pagination.total
      },
      editBox: null,
      clickStatus: null,
      taskId: 0,
      editForm: {
        name: '',
        is_end: '',
        p: '',
        type: 1 // 类型 1 我的任务 2 我的发布 3 我的审阅
      },
      statusList: [
        {
          name: '全部',
          id: ''
        },
        {
          name: '执行中',
          id: 0
        },
        {
          name: '完成',
          id: 1
        }
      ],
      timeList: [
        {
          name: '全部',
          id: ''
        },
        {
          name: '最近一周',
          id: 1
        },
        {
          name: '最近一月',
          id: 2
        }
      ],
      sectionList: [
        {
          name: '全部',
          id: ''
        },
        {
          name: '执行中',
          id: 0
        },
        {
          name: '完成',
          id: 1
        }
      ],
      readTask: [
        {
          id: '',
          name: '全部'
        },
        {
          id: '2',
          name: '已读'
        },
        {
          id: '1',
          name: '未读'
        }
      ],
      mylist: [
        {
          name: '全部',
          id: ''
        }, {
          id: 0,
          name: '未处理'
        },
        {
          id: 1,
          name: '执行中'
        },
        {
          id: 2,
          name: '已转派'
        },
        {
          id: 3,
          name: '待审核'
        },
        {
          id: 4,
          name: '驳回'
        },
        {
          id: 5,
          name: '完成'
        }],
      userStatus: {
        0: '未处理',
        1: '执行中',
        2: '已转派',
        3: '待审核', // 我的公文 查阅人查看
        4: '驳回',
        5: '完成',
      },
      userInfomation: null,
    }
  },
  created() {
    this.InitFn()
  },
  methods: {
    // 初始化
    async InitFn() {
      console.log('用户信息：', this.userInfo)
      // 类型 1 我的任务 2 我的发布 3 我的审阅
      // 需要判断是什么任务
      // <!--          档案任务/公文任务 我的任务使用 is_end-->
      // <!--          档案任务 我的发布 审阅任务 is_finish 执行中完成-->
      // <!--          公文任务 抄送任务 使用 is_read-->
      // tabchildValue 1 我的任务 2 我的发布 3 抄送任务
      // tabValue 1 普通任务 2 档案任务 3 公文任务
      let option = this.getJson(this.editForm)
      option.p = this.page.pageindex
      console.log('搜索内容信息：', option)
      if (Number(this.tabValue) === 1) {
        // option = {p: this.page.pageindex}
        option.is_finish = option.is_end
        delete option.is_end
      } else {
        // if(Number(this.tabchildValue)===1){
        //   option.is_end = option.is_end
        //   delete option.is_end
        // }
        console.log('页面类型：', this.tabValue, this.tabchildValue)
        if (Number(this.tabValue) === 3 && Number(this.tabchildValue) === 3) {
          option.is_read = option.is_end
          delete option.is_end
        }
        if ((Number(this.tabValue) === 2 && (Number(this.tabchildValue) === 2 || Number(this.tabchildValue) === 3)) || (Number(this.tabValue) === 3 && Number(this.tabchildValue) === 2)) {
          option.is_finish = option.is_end
          delete option.is_end
        }
        console.log('搜索内容信息1：', option)
      }
      // let data = await this.$post(this.api.task.archives.index, this.editForm);
      taskIndex({type: this.tabValue, data: option}).then(res => {
        if (!res.code) {
          for (let item of res.list.data) {
            let data_ = item.create_time.split(' ')
            let data_l = data_[1].split(':')
            data_l.splice(2, 1)
            data_[1] = data_l.join(':')
            item.create_time = data_.join(' ')
            // 公文任务需要判断是否已读 'tabchildValue', 'tabValue'
            if (Number(this.tabValue) === 3 && Number(this.tabchildValue) === 3) {
              if (item.is_read_user) {
                let a = item.is_read_user.split(',')
                console.log('已读人员', a)
                if (a.indexOf(this.userInfo.id.toString()) !== -1) {
                  item.is_read = '已读'
                } else {
                  item.is_read = '未读'
                }
              } else {
                item.is_read = '未读'
              }
            }
            // 判断按键是否可以删除
            // tabchildValue 1 我的任务 2 我的发布 3 抄送任务
            // tabValue 1 普通任务 2 档案任务 3 公文任务
            item.detelBtn = false
            if (Number(this.tabValue) === 1 && this.userInfo.id === 1) {
              item.detelBtn = true
            } else {
              if (Number(this.tabchildValue) === 2) {

              }
            }
          }
        }
        this.arryList = res.list.data
        this.page.total = res.list.total
      })
    },
    getJson(item){
      return JSON.parse(JSON.stringify(item))
    },
    searchFn() {
      this.page.pageindex = 1
      if (this.value1 && this.value1.length) {
        this.editForm.create_time1 = this.value1[0];
        this.editForm.create_time2 = this.value1[1];
      }
      this.InitFn()
    }
    ,
// 编辑 执行情况
    handleEdit(id) {
      this.taskId = id
      this.dialogDrawerVisible = true
    }
    ,
// 任务详情 数据获取
    taskDetail(id) {
      this.taskId = id
      this.detailVisible = true
    },
// 刷新页面
    refreshFn() {
      this.page.pageindex = 1
      this.editForm.name = ''
      this.editForm.is_end = ''
      this.InitFn()
    },
// 设置默认选中
    checked(option) {
      if (option === 'first' && JSON.stringify(this.applyBookBox) !== '{}') {
        this.applyBookBox = {}
        this.$refs.table.clearSelection()
      }
      for (let i = 0; i < this.userList.length; i++) {
        if (this.applyBookBox[this.userList[i].id]) {
          this.$refs.table.toggleRowSelection(this.userList[i], true)
        }
      }
    }
    ,
// 分页
    handleSizeChange(val) {
      this.page.pageindex = val
      this.InitFn()
    }
    ,
// 刷新详情信息
    getUser() {
      this.taskDetail(this.editBox, 'refreshFn')
    },
// 弹窗
    checkTask() {

    },
    handleDetel(index) {
      this.$confirm('确认永久删除, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.detelRespon(index)
      }).catch(() => {
      })
    }
    ,
    detelRespon(index) {
      console.log('tabValue:', this.tabValue)
      let that = this
      taskDetel({type: this.tabValue, data: {id: this.arryList[index].id}}).then(res => {
        console.log('res:', res)
        if (!res.code) {
          that.InitFn()
          that.$message.success('删除成功!')
        } else {
          that.$message.error('删除失败!')
        }
      })
      // this.$post(api.task_delete, {id: this.arryList[index].id}).then((response) => {
      //   if (response.code === 0) {
      //     // this.arryList.splice(index, 1)
      //     this.InitFn()
      //     this.$message({
      //       type: 'success',
      //       message: '删除成功!'
      //     })
      //   } else {
      //   }
      // }).catch((err) => {
      //   console.log(err)
      // })
    }
  },
  mounted() {
  }
}
</script>

<style lang="scss" scoped>
.evaluateBox {
  background: #eee;
  margin-top: 5px;
  border-radius: 4px;
  padding: 5px;
}

.lookLsit {
  cursor: pointer;
}

.lookLsit:hover {
  text-decoration: underline;
}

#tablebox {
  display: flex;
  flex-direction: column;
}

.el-table {
  color: #000;
}

.right-box .container .main .content-container .input-val-box .input-top {
  width: 250px;
}

</style>
